perm filename MS.F4[NEW,LCS]15 blob sn#592318 filedate 1981-06-09 generic text, type T, neo UTF8
00100	C  ********** DISPLAYS MUSIC AND DRAWS IT ON THE PLOTTER **********
00200	C *** READS DATA FROM CLEFA-B-C-ETC., BDR40,BDI40, ETC.
00300	
00400		IMPLICIT INTEGER(A-Q,S-Z)
00500		REAL DIS,DISX,A,B,STFF,CENTR,POS ,UD,XDIS
00600		DIMENSION LST(18),DP(0/7)
00700		COMMON /DL/X22,SAVER,NAME,EXT,IOLD /RRJJ/RJJ2,RJJ(20),JJA
00800		1 /FONT/JFONT /RINP/R(10,80),RPOS(2,50),RI(200) 
00900		2 /RMOD/RMODE2,RSET4,IBEAM,
01000		3 NOSET,STEM,STUP,NTC,ENDP,RAD,RDD,ITB,POSB
01100		4 /FRMT/F78F(1),FA1(1),FA5(1),ASK /SIZ/RSZ,JCEN,KCEN
01200	C ORDER OF COMMON MUST! REMAIN AS IS (FOR DMP MODE READ)
01300		COMMON  /LIMIT/LIMIT,ITEM,L,I,IX,ITEMX,ILIM
01400		1 /STF/RSTFAC(0/7),RSTJ2
01500		2  /POSI/STFF(0/7),JJ2,POS  /ALF/INP(72),ML 
01600		3 /SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
01700		4 /UPDWN/ RL,UD /IDEV/IDEV,CHNG /NUM/NUM(10),JRD
01800		5 /PLTR/PLT,RHT,DIS,XDIS /PTR/PWDS(350)
01900		COMMON/A2Z/LAA,LBB,LCC,LDD,LEE,LFF,LGG,LHH,LII,LJJ,LKK,LEL,LMM
02000		1 ,LNN,LOH,LPP,LQQ,LRR,LSS,LTT,LUU,LVV,LWW,LXX,LYY,LZZ
02100		2 /JCHAR/IXX,ISEMI,IBLA,IG,JED,KED,REDIT,RITEM 
02200		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /RNW/RNW /MKS/MKS(14)
02300		1 /XRN/RN(3000) /DPY/ST(4000),MEDIT,IGO  /DPTR/WDS(350)
02400		2 /MKX/MKX(11) /SC/SSC(72) /YED/YED,IBOX,RBOX/JCLIP/JCLIP
02500		1 /CHK/ICHK,ITCHK,JIT,SPD,IDPY,M
02600		EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R5,RJQ(3)),(I4,
02700		1 INP(4)),(R6,RJQ(4)),(J10,JQ(8)),(J6,JQ(4)),(R4,RJQ(2)),(R7,
02800		2 RJQ(5)),(R3,RJQ(1)),(I2,INP(2)),(I1,INP(1)),(I3,INP(3)),
02900		3 (RJ13,RJJ(11))
03000		4,(R11,RJQ(9)),(NJR,R10,RJQ(8)),(R8,RJQ(6)),(RJ3,RJJ(1)),(R9,
03100		5 RJQ(7)),(RX3,RJQ(20)),(ST2,ST(2)),(R13,RJQ(11)),(J8,JQ(6))
03200		6 ,(J13,JQ(11)),(IPOS,POS),(LST(13),K),(LST(14),X),(LST(15),J)
03300		7 ,(I7,INP(7)) ,(ISTAR,MKX(11))
03400		1 ,(MINUS,MKX(10)),(LESS,MKX(3)),(IGT,MKX(4)),(RJ7,RJJ(5))
03500		DATA NUM/'0','1','2','3','4','5','6','7','8','9'/,JRD/0/,ILIM/350/
03600		1 ,STFF/-469.,-346.,-223.,-100.,23.,146.,269.,392./,RSTFAC/8*1./
03700		2 ,LST/'NOTE','REST','CLEF','LINE','SLUR','BEAM','TRILL','STAFF',
03800		3 'MISC','NUMB','LIBRY','CIRCL',0,0,0,'WORD','KSIG','METER'/
03900		4 ,DP/8*1/,RNW/2.44/,LCNT/1/,LIMIT/3000/,DIS/1.0/, RHT/1.0/
04000		5 ,PLUS/'+'/,EXT/'MS '/,COMMA/','/,FILNAM/'INIT'/
04100		DATA MKS/'W','A','F','S','M','T','D','U','H','I','P','C','R','O'/
04200	C THE GIANT NUMBERS ARE FOR [ AND ]
04300		DATA MKX/'/',';','<','>',-19728949184,-18655207360,'(',')','.'
04400		1,'-','*'/,SSC(14)/'X'/,SSC(15)/';'/,SSC(72)/' '/
04500	C LIMIT IS MAIN ARRAY LENGTH (3000)   /SC/SSC ARRAY USED IN MARKS,BEAMS,SLURS
04600	C  350 LIM. ON ITEMS PWDS, WDS (SEE ALSO 571 TO 170)
04700	
04800	C*****  CALL SEGFIX C FOR UPPER SEGMENTS USED BY MORE THAN 1 JOB (SEGFIX.FAI[TVR])
04900		IDEV=5
05000		I1=0
05100		CALL TYPLOC(450,200)
05200	10	CALL DPYX
05300	C THIS DOES DPYSET, ETC.
05400		DO 20 K=1,I
05500	CLEARS ARRAY FOR RESTART OF 'SETUP' ROUTINE
05600	20	RN(K)=0
05700		JFONT=0
05800		CHNG=0
05900	C flag for edit changes (=-1 means a change has been made.)
06000		IOLD=0
06100	C   IOLD HOLDS LAST ITEM NUM. EDITED.
06200		IX=0
06300		RSET4=999
06400		QUICK=0
06500		CB=0
06600	C CB IS CENTER-BIG (CENTERING RANGE=6)
06700		UD=1
06800		RL=1
06900		FSCN=LEL
07000		RPOS(1,1)=0
07100		RSZ=.845
07200		JCLIP=525
07300		X22=0
07400		MINUZ=0
07500	C MINUZ IS FLAG FOR '-' SETTING CRLF BACKUP FEATURE (WHEN IN EDIT MODE)
07600		JCEN=0
07700		KCEN=0
07800		PLT=0
07900		PWDS(1)=1
08000		EDQ=-1
08100		RN(2)=0
08200	C  FOR RESTART.  AVOIDS STAFF CODE NUM.
08300		SAVER=4
08400		DO 30 K=0,7
08500	30	RSTFAC(K)=1.
08600		REDIT=999.
08700		M=1
08800		ITEM=0
08900		ITEMX=0
09000		ZERO=-1
09100		WDS(1)=4
09200	C  DATA IN DPY ARRAY STARTS AT WD.4!
09300		I=1
09400	40	SCORE=-1
09500	50	IGO=-1
09600		IF(I1.NE.LRR)GO TO 130
09700		I1=-1
09800		CALL NAMEXT(INP,NAME,EXT)
09900		J2=0
10000		IF(NAME.NE.IBLA)GO TO 2250
10100	C YOU CAN TYPE 'RS NAME' FOR QUICK RESTARTS
10200		GO TO 130
10300	
10400	60	CALL NOTWRT
10500	70	IF(M.GT.I)GO TO 80
10600	CC	IF(IGO)CALL DPYOUT(1)
10700	C11/80	IF(IGO)CALL DPYDO(1)
10800		IF(IGO)CALL DPYDO(1)
10900	C12/80	IF(IGO.LT.0.AND.X22.EQ.0)CALL DPYDO(1)
11000	C DPYOUT DONE IN 'BOX' IF CURSOR IS TO APPEAR ALSO.
11100	80	ITEM=ITEM+1
11200		IF(ITEM.LT.ILIM)GO TO 90
11300		CALL TYPSTR('**** TOO MANY ITEMS')
11400		CALL TYPINT(ITEM)
11500		CALL TYPSTR('/349')
11600		CALL TYPCRLF
11700		I=PWDS(ILIM)
11800		ITEM=ILIM-1
11900		ST2=WDS(ILIM)
12000	CC	CALL DPYOUT(1)
12100	        CALL DPYDO(1)
12200		GO TO 40
12300	90	IF(IGO.GT.0)GO TO 100
12400		K=ST2
12500		IF(X22.EQ.0)GO TO 100
12600		CALL BOX(IBOX,RBOX)
12700		ST2=K
12800	100	WDS(ITEM+1)=ST2
12900		IF(EDQ.EQ.-1)GO TO 110
13000		IF(M.LT.I)GO TO 2370
13100	C  SL=SAVE AFTER RESETTING LENGTH OF PAGE.  (SEE I2 IN SCX)
13200	110	PWDS(ITEM+1)=I
13300		PLT=0
13400		IF(IGO.NE.0)GO TO 120
13500	CC	CALL DPYOUT(1)
13600	        CALL DPYDO(1)
13700		IF(SCORE.EQ.0)GO TO 1000
13800	C  GO GET MORE FROM SCX.
13900		IGO=-1
14000	
14100	120	IF(SCORE.EQ.0)GO TO 1070
14200	130	SVST=ST2
14300	C CATCHES TYPO WITH 'C'
14400		K=ITEM+1
14500		IF(X22.EQ.0)GO TO 250
14600	C 'N' SUPPRESSES TYPE-OUT, 'P' OR NEW ITEM RESTORES IT.
14700		IF(QUICK)170,140,290
14800	C -1=QUICK MODE, +1=SUPPRESS TYPE-OUT OF PARAMS, 2=AS 1, BUT RESETS AT C
14900	140	L=RN(MEDIT+1)
15000		K=X22
15100	CXX	IF(IDEV.EQ.1)GO TO 250
15200		IF(IDEV.EQ.1)GO TO 290
15300	C 'FILE'CAN BE USED  WHILE IN EDIT MODE
15400		CALL TYPCRL
15500		CALL TYPWRD(LST(L))
15600		CALL TYPCRL
15700		CALL TYPFLT(RN(MEDIT+1))
15800		CALL TYPCHR('   ',3)
15900		CALL TYPFLT(RN(MEDIT+2))
16000		CALL TYPCHR('   ',3)
16100		CALL TYPFLT(RN(MEDIT+3))
16200		IF(YED.LT.2)GO TO 260
16300	C   YED IS SET AT 426
16400		DO 150 L=4,YED+2
16500		CALL TYPCHR('   (',4)
16600		CALL TYPINT(L)
16700		CALL TYPCHR(') ',2)
16800	150	CALL TYPFLT(RN(MEDIT+L))
16900		CALL TYPCRL
17000		GO TO 260
17100	
17200	160	  IF(X22.EQ.0)GO TO 260
17300		QUICK=-1
17400		CALL TYPSTR(';=LFT :=RT (=UP )=DN /=HALF *=*2')
17500		CALL TYPCRL
17600	170	CALL FSCAN
17700	C FNUM.FAI=FAST COMMANDS ;=← :=→ (=↑ )= /=HALF *=*2 X=X C=C OTHERS=CR
17800		GO TO 380
17900		GO TO 400
18000		GO TO 410
18100		GO TO 420
18200		GO TO 450
18300		GO TO 470
18400		GO TO 430
18500		GO TO 440
18600		I1=0
18700	180	QUICK=0
18800		GO TO 330
18900	
19000	190	FORMAT(2A5)
19100	200	REREAD 190,K,K
19200		IF(I4.NE.LPP)GO TO 210
19300		CALL HELP(K)
19400		GO TO 130
19500	210	CALL LO2UP(K)
19600	C CHANGES LOWER CASE TO UPPER CASE
19700		IF(K.NE.IBLA)GO TO 215
19800		K=FILNAM
19900		CALL TYPSTR('READING ')
20000		CALL TYPWRD(K)
20100		CALL TYPCRL
20200	215	FILNAM=K
20300	C SAVE NAME FOR LATER USE. 'READ' OR 'RR' ALONE READS PREVIOUS FILE.
20400		IF(LOOK(K)+LOOKD(K))GO TO 220
20500		CALL TYPSTR(' FILE NOT FOUND')
20600		GO TO 260
20700	CC2502  CALL IFILE(1,K)
20800	220	CALL FILX(K)
20900	C  GOBBLES ET HEADER OR CONVERTS SOS FILE
21000	230	IDEV=1
21100		GO TO 290
21200	
21300	240	IDEV=5
21400		GO TO 260
21500	C RESET TO TTY MODE
21600	
21700	250	CALL HYDPOG(3)
21800	C  TO DELETE VERTICAL LINE (55)
21900		KED=0
22000		QUICK=0
22100	C  RESET PARAM TYPE-OUT
22200		RJ13=0
22300	C KILL CENTERING FEATURE FOR NOW
22400	260	IF(IDEV.EQ.1)GO TO 290
22500		CALL TYPCRL
22600		IF(X22.EQ.0)GO TO 270
22700		CALL TYPSTR('**** EDIT ITEM #')
22800		CALL TYPINT(K)
22900		GO TO 280
23000	270	CALL TYPWRD(NAME)
23100		CALL TYPCHR('.',1)
23200		CALL TYPWRD(EXT)
23300		CALL TYPSTR('   TYPE FOR ITEM #')
23400		CALL TYPINT(K)
23500		CALL TYPSTR('           ')
23600		CALL TYPINT(I)
23700		CALL TYPSTR(' ')
23800		CALL TYPINT(SVST)
23900	280	CALL TYPCRL
24000	290	SCORE=-1
24100	CQQ     ACCEPT 89,INP
24200		READ(IDEV,700,END=240)INP
24300		IF(I1.EQ.LESS)GO TO 240
24400	C  '<' = TEMPORARY ESCAPE FROM 'FILE' MODE
24500		IF(I1.NE.IGT)GO TO 300
24600	C  '>' = RETURN TO 'FILE' MODE - IF NOT STILL EDITING.
24700		IF(X22.NE.0)GO TO 260
24800		GO TO 230
24900	300	IF(I1.EQ.':')CALL CMDIN 
25000		IF(I1.EQ.ISEMI)CALL CMDIN 
25100	C TYPE : AS FIRST ITEM TO SAVE COMMAND LINE.  TYPE ; TO REPEAT IT.
25200	   	CALL LULOOP
25300		IF(IDEV.EQ.5)GO TO 320
25400		IF(I7.NE.LTT)GO TO 320
25500		IF(I1.NE.LCC)GO TO 320
25600	C 'ET' DIRECTORY? UGH!!!
25700	310	READ(IDEV,700)INP
25800		IF(I3.NE.ISEMI)GO TO 310
25900		READ(IDEV,700)INP
26000	C READ AGAIN TO GET PAGE MARK - OR SOMETHING???
26100		GO TO 290
26200	C****320	REREAD 2430,J,R2,RJQ
26300	C  ↑↑↑ 1/78
26400	320	CALL READX
26500	CRR	J=JA
26600	C  FIRST CATCHES BLANKS, NUMBERS, ETC.
26700	330	IF(I1.GT.COMMA)GO TO 900
26800		IF(I1.EQ.IBLA)GO TO 900
26900		IF(I1.EQ.LII)GO TO 740
27000	C  I = IN, ITEM
27100		IF(I1.EQ.IXX)GO TO 640
27200	C  X = EXIT
27300		IF(I1.EQ.LEL)GO TO 680
27400	C  L = LEFT, LP=LIGHT PEN
27500		IF(I1.EQ.LUU)GO TO 680
27600	C  U = UP
27700		IF(I1.EQ.LRR)GO TO 660
27800	C  R = RIGHT, RI=RIT, READ, RS=RESTART
27900		IF(I1.EQ.LDD)GO TO 360
28000	C  D = DOWN, DI=DIM, DE=DELETE
28100		IF(I1.EQ.LCC)GO TO 1740
28200	C  C = COPY, CR=CRESC., CN=CENTER, CB=CENTER BIG, CH=ON HEAD, CT=ON TAIL
28300	C  CX = UNCENTER  CP n =CENTER BY NOTE POSITION  CD=CENTER DASHES
28400		IF(I1.EQ.LSS)GO TO 490
28500	C  S = SAVE, SPACING STAFF, STAFF, SHOW, SF, SFZ, SCALE, STC=STACCATO
28600		IF(I1.EQ.LEE)GO TO 540
28700	C  E ED=EDIT WITH POS. FIRST, E=EDIT WITH LIGHT PEN, ES=EDIT WITH STAFF NUM
28800		IF(I1.EQ.LNN)GO TO 710
28900	C  N = NO TYPE,  NX = RESET TO NEXT ALPHABETICAL NAMED FILE
29000		IF(I1.EQ.LPP)GO TO 1150
29100	C  P = P,PP,PPP, P N=PRINT PARAM N., PR=PRINT PARAM LIST, POCO, PIU, PZ=PIZZ,
29200		IF(I1.EQ.LAA)GO TO 350
29300	C  A = ADJUST TO SET, AD=ADJUST STEMS, AC=ACCEL, AR=ARCO, AT=A TEMPO, ACT=ACCENT
29400		IF(I1.EQ.LQQ)GO TO 160
29500	C  Q = QUICK
29600		IF(I1.EQ.LTT)GO TO 770
29700	C  T = TYPE TEXT, T=TYPE OUT, TE=TENUTO, TL=TYPLOC
29800		IF(I1.EQ.LFF)GO TO 870
29900	C  F = F,FF,FFF,FE=FERMATA,FILE(TO READ COMMAND FILE)
30000		IF(I1.EQ.LHH)GO TO 840
30100	C  H = HARMONIC, HW=HEAVY WEDGE, HELP
30200		IF(I1.EQ.COMMA)GO TO 1460
30300	C VALUE OF COMMA IS > VALUE OF PLUS
30400		IF(I1.GE.PLUS)GO TO 900
30500		IF(X22.NE.0)GO TO 260
30600	C NEXT CANNOT HAPPEN IN EDIT MODE.
30700	C  O = O=ORDER BY STAFF, OX=ORDER WITHOUT REGARD FOR STAFF NUM.
30800		IF(I1.NE.LOH)GO TO 340
30900	C NEXT FOR REORDERING ITEMS FROM LEFT TO RIGHT, BY STAFF. THEN IT DOES A
31000		IF(I2.EQ.LXX)R2=1
31100		CALL ORDER
31200	340	IF(I1.EQ.LZZ)GO TO 1170
31300	C  Z = ZOOM
31400		IF(I1.EQ.LMM)GO TO 1770
31500	C  M = MOVE, ME=MENO, MO=MOLTO, MF,MP
31600		IF(I1.EQ.LJJ)GO TO 1770
31700	C  J = JUSTIFY   JT=JUSTIFY TEXT
31800		IF(I1.EQ.LGG)GO TO 2220
31900	C  G = GET, GM=GET MORE
32000		IF(I1.EQ.LWW)GO TO 850
32100	C  W = WEDGE ACCENT
32200		IF(I1.EQ.'(')GO TO 1430
32300		IF(I1.EQ.')')GO TO 1450
32400	C LEFT AND RIGHT PARENTHESES
32500		IF(I1.NE.LBB)GO TO 260
32600	C******* ADD MORE LETTER ITEMS HERE *************
32700	C  B = BRC=BRACE, BRK=BRACKET  -- FOR FRONT OF LINE.  BAR=BAR LINE.
32800		IF(X22.NE.0)GO TO 260
32900	CRR***	REREAD 2430,JA,JA,JA,R2,RJQ
33000	CRR***	J=4
33100		JA=4
33200		R7=5
33300		IF(I3.NE.LCC)R7=4
33400		IF(I3.EQ.LRR)R7=0
33500		GO TO 900
33600	
33700	350	IF(I2.EQ.LDD)GO TO 570
33800	C 'A'  = ALTER(GO TO 112) ADJUST(GO TO 886) ACCEL(GO TO 7813)
33900	C ALIGN=GO TO 886
34000		IF(X22.NE.0)GO TO 580
34100		IF(I2.EQ.LTT)GO TO 1410
34200	C AT=A TEMPO
34300		IF(I2.EQ.LRR)GO TO 1420
34400	C AR=ARCO
34500		IF(I2.NE.LCC)GO TO 1060
34600		IF(I3.EQ.LTT)GO TO 810
34700	C ACT=ACCENT.   NEXT FOR AC (=ACCEL.)
34800		RD=80
34900		GO TO 880
35000		
35100	360	IF(I2.GE.IBLA)GO TO 650
35200	C 'D'  DIM →578, DOWN →883, DELETE →112 OR 883  DP →886
35300		IF(I2.NE.LEE)GO TO 370
35400		IF(X22.NE.0)GO TO 650
35500		GO TO 1060
35600	370	IF(I2.EQ.LPP)GO TO 570
35700		IF(I2.NE.LII)GO TO 260
35800	C NEXT FOR DIM.=82
35900		IF(X22.NE.0)GO TO  260
36000		RD=82
36100		GO TO 880
36200	
36300	380	I1=LEL
36400	390	FSCN=I1
36500		GO TO 330
36600	400	I1=LRR
36700		GO TO 390
36800	410	I1=LUU
36900		GO TO 390
37000	420	I1=LDD
37100		GO TO 390
37200	430	I1=IXX
37300		GO TO 180
37400	440	I1=LCC
37500		GO TO 180
37600	450	I1=FSCN
37700		IF(FSCN.EQ.LEL)GO TO 460
37800		IF(FSCN.EQ.LRR)GO TO 460
37900	C NEXT FOR UP-DOWN
38000		UD=UD/2
38100		GO TO 330
38200	460	RL=RL/2
38300		GO TO 330
38400	470	I1=FSCN
38500		IF(I1.EQ.LEL)GO TO 480
38600		IF(I1.EQ.LRR)GO TO 480
38700		UD=UD*2
38800		GO TO 330
38900	480	RL=RL*2
39000		GO TO 330
39100	
39200	
39300	C  'S'=SET, SA=SAVE, SB=SAVE BIG, SM=BIG+SAME NAME, ST=STAFF, SP=SPC STF
39400	C  SC=SPACING SCALE ABOVE STAFF n (99=DELETE IT)
39500	490	IF(I2.EQ.LTT)GO TO 560
39600		IF(I2.EQ.LAA)GO TO 520
39700		IF(I2.EQ.LCC)GO TO 580
39800		IF(I2.EQ.LDD)GO TO 520
39900		IF(I2.EQ.LEE)GO TO 530
40000		IF(I2.EQ.IBLA)GO TO 530
40100		IF(I2.EQ.LPP)GO TO 730
40200		IF(I2.EQ.LHH)JFONT=1
40300		IF(I3.EQ.IXX)JFONT=0
40400		IF(I3.EQ.LPP)JFONT=-1
40500		IF(I3.EQ.LOH)JFONT=-2
40600		IF(I3.EQ.LII)JFONT=-3
40700	C  'SH'(=SHOW) IS SAME AS 44 1.  SHOWS TYPE FONTS ON DPY.
40800	C  'SHP' = SHOW ONLY AS 'PRIMITIVE' FONT, 'SHX' = CANCEL FONTS ON DPY.
40900	C  'SHO' = FONT SET (TEMPORARILY) TO 'BDR'; 'SHI' = 'BDI' (ITALICS)
41000		IF(I2.NE.LFF)GO TO 510
41100		RD=45
41200		IF(I3.NE.LZZ)GO TO 880
41300		RD=92
41400	CRR***500	REREAD 2430,JA,JA,JA,R2,RJQ
41500	500	R5=RD
41600		GO TO 890
41700	510	IF(I2.NE.LMM)GO TO 130
41800	C  ONLY FOR ST, SA, SB, SM, RS, S, SF=45, SFZ=92
41900	520	IF(X22.NE.0)GO TO 130
42000		SAVER=4
42100		CALL SAVIT
42200		GO TO 130
42300	530	JA=55
42400		R2=RN(MEDIT+3)
42500	C  POSITION OF ITEM LOOKED AT.
42600		R3=55.
42700		GO TO 1110
42800	C  ABOVE FOR 'S'ET ALIGNMENT
42900	C  'S'=SET ALIGNMENT, 'A'=ALIGN IT.  'M'=MOVER 'C'= COPIER
43000	C  'E'=EDIT; 'I'=ITEM; 'G'=GET; 'GM'=GET MORE;
43100	540	K=-1
43200		DO 550 JA=3,10
43300	550	IF(INP(JA).NE.IBLA)GO TO 570
43400		GO TO 650
43500	CRR***560	FORMAT(A2,21F)
43600	CC      IF(X22.NE.0)GO TO 59
43700	560	IF(I3.EQ.LCC)GO TO 830
43800	C STC=STACCATO
43900	570	IF(CHNG.NE.0)GO TO 130
44000	C CAN'T DO 'ST' AND OTHER THINGS AFTER CHANGES IN EDIT MODE.
44100	CRR***580	REREAD 560,K,R2,RJQ
44200	580	JA=55
44300		IF(I2.NE.LCC)GO TO 590
44400		CALL SCL
44500		GO TO 130
44600	590	IF(I2.NE.LDD)GO TO 600
44700		IF(I1.EQ.LAA)JA=190
44800	C  'AD'just stems to beams.  'A'=ADJUST LFT-RT POS. AFTER 'SET' COMMAND
44900	600	IF(I2.EQ.LTT)JA=44
45000		IF(I2.EQ.LNN)GO TO 950
45100		IF(I2.NE.LPP)GO TO 1110
45200		IF(DISAPR(DP).EQ.0)GO TO 120
45300		GO TO 1320
45400	
45500	C 'LP'=LIGHT PEN. TO BE USED ONLY IN EDIT MODE
45600	640	IF(X22.EQ.0)GO TO 260
45700	C 'X'  GO BACK IF NOT IN EDIT MODE  -- ALSO R,L,U,D
45800		MINUZ=0
45900	C  CLEAR MINUS SIGN FLAG
46000	
46100	C NEXT FOR READ, RS, DEL, L,R,U,D
46200	650	IF(IX.EQ.I)GO TO 670
46300	C  CAN'T DELETE ('DE') AFTER A PARAM HAS BEEN CHANGED. START OVER.
46400		IF(I2.NE.LEE)GO TO 680
46500		GO TO 130
46600	
46700	C  R = RIGHT MOVE, RI=RIT., RS=RESTART, READ=READ
46800	660	IF(I2.GE.IBLA)GO TO 680
46900		IF(I2.EQ.LEE)GO TO 200
47000	C ABOVE FOR 'READ'(SAME AS 'FILE')  
47100		IF(X22.NE.0)GO TO 260
47200	C GO BACK IF STILL IN EDIT MODE.
47300		IF(I2.EQ.LSS)GO TO 10
47400	C  TYPE 'RS' TO RESTART.
47500	CCCC	IF(I2.EQ.LEE)GO TO 200
47600	C ABOVE FOR 'READ'(SAME AS 'FILE')   NEXT FOR RIT.=37
47700		RD=37
47800		GO TO 880
47900	
48000	670	IF(I1.EQ.LCC)GO TO 1650
48100	680	IF(I1.EQ.LEE)GO TO 690
48200	C ABOVE FOR 'ED' (WITH LIGHT PEN)
48300		IF(X22.EQ.0)GO TO 130
48400	C  CAN'T MOVE ITEMS UNLESS REALLY IN EDIT MODE!
48500		IF(QUICK.EQ.0.AND.I2.NE.LEE)QUICK=2
48600	C NOW PARAMS DON'T PRINT OUT WHEN USING L,R,U,D***(BUT DE=DELETE)
48700	690	CALL EDIT(JJA)
48800		IF(JA.NE.99)GO TO 1110
48900		CALL DELETE
49000	C  DELETE ROUTINE COULD BE PUT DIRECTLY IN HERE.
49100		GO TO 1700
49200	700	FORMAT(72A1)
49300	C  TYPE L, R, U OR D OR EDIT TO MOVE LAST ENTERED ITEM.
49400	
49500	710	IF(I2.NE.IXX.AND.I2.NE.LBB)GO TO 715 
49600	C TYPE 'NX' TO RESTART WITH NEXT ALPHABETICAL FILE NAME (ONLY 5TH LETTER THOUGH.)
49700	C  'NB' BACKS UP ONE FILE
49800		IF(X22.NE.0)GO TO 130
49900	C DON'T GO TO NEXT IF IN EDIT MODE
50000		I1=LRR
50100		I4=PLUS
50200		IF(I2.EQ.LBB)I4=MINUS
50300		I2=LSS
50400	C I4 IS USUALLY NAME INPUT FILE
50500		GO TO 10
50600	715	IF(QUICK.NE.0)GO TO 720
50700	C ↑↑↑ SO 'N n' WILL WORK EVEN AFTER N HAS BEEN SET.
50800		QUICK=1
50900	C TYPE 'N'  =NO-TYPE PARAMS  TO SUPPRESS TYPE-OUT WHILE EDITING.
51000		IF(X22.NE.0)GO TO 730
51100	720	I1=LII
51200	C  'N n' WHEN NOT IN EDIT MODE = 'I n'<CR>,'N'<CR>
51300	730	IF(I1.NE.LII)GO TO 750
51400	740	IF(I2.EQ.LNN)GO TO 570
51500	C  'IN n,n,n,' MUST BE READ AGAIN AT 886 TO GET n'S CORRECTLY.
51600		JA=223
51700	C JA=223 FOR EDIT MODE
51800		IF(CHNG.NE.0)GO TO 130
51900	C AFTER A CHANGE OF AN ITEM, 'I', ETC. IS ILLEGAL.
52000		IF(R2.EQ.0)GO TO 1110
52100		IF(R2.LT.1.0)GO TO 130
52200	C CATCHES TYPOS.  (I.E. DECI. NUMBER AFTER I)
52300		GO TO 1110
52400	
52500	750	IF(K)JA=55
52600	C   ED 47 -1 = 55 47 -1, ETC.
52700		IF(JA.EQ.101)GO TO 590
52800		IF(I1.NE.LNN)GO TO 760
52900		IF(R2.NE.0)GO TO 720
53000	C IF NO NUM FOLLOWS 'N' GO PRINT OUT CURRENT PARAMS.
53100		GO TO 290
53200	
53300	C  'Z' = ZOOM  (OLD CODE# 24)
53400	760	IF(I2.NE.LPP)GO TO 770
53500	CRR***	RSET4=R3
53600		RSET4=R2
53700	C SPn SETS "SETUP" STAFF NUMBER
53800		GO TO 130
53900	C  'SP' IS SAME AS 444
54000	C  'P n' = PRINT CURRENT CONTENTS OF PARAM n. (ONLY WHILE IN EDIT MODE.)
54100	770	IF(X22.EQ.0.OR.I2.EQ.LEL)GO TO 910
54200	C JUMP OUT IF 'TL' (TYPLOC)
54300		QUICK=0
54400	C TYPE 'T' TO RESET PARAM TYPE-OUT
54500		IF(R2.EQ.0)GO TO 130
54600		GO TO 720
54700	
54800	780	RD=14
54900	C PLUS
55000	CRR***790	REREAD 560,JA,R2,RJQ
55100	CRR790	CONTINUE
55200	800	IF(X22.NE.0)GO TO 130
55300	C CAN'T ENTER NEW ITEM WHILE IN EDIT MODE.
55400	CRR***	J=9
55500		JA=9
55600		R5=RD
55700		IF(R4.EQ.0)R4=15
55800		GO TO 900
55900	810	RD=5
56000	C ACCENT
56100	CRR***820	REREAD 2430,J,J,J,R2,RJQ
56200	CRR820	GO TO 800
56300		GO TO 800
56400	830	RD=7
56500	C STACC.
56600	CRR***	GO TO 820
56700		GO TO 800
56800	840	IF(I3.EQ.LEL)GO TO 200
56900	C  JUMP FOR HELP
57000		IF(X22.NE.0)GO TO 260
57100	C CAN'T DO NEXT IF STILL IN EDIT MODE.
57200		RD=13
57300	C HARMONIC
57400		IF(I2.EQ.LWW)RD=21
57500	C HEAVY WEDGE
57600	CRR***	GO TO 790
57700		GO TO 800
57800	850	RD=4
57900	C WEDGE
58000	CRR***	GO TO 790
58100		GO TO 800
58200	
58300	CRR***860	REREAD 560,JA,R2,RJQ
58400	860	R5=26
58500	CRR***	J=9
58600		JA=9
58700		IF(R4.EQ.0)R4=12
58800	C FERMATA
58900		GO TO 900
59000	
59100	870	IF(I2.EQ.LII)GO TO 200
59200		IF(X22.NE.0)GO TO 260
59300		R5=51
59400	C F=51 FF=52 FFF=53, FE=FERMATA, FILE
59500		IF(I2.EQ.IBLA)GO TO 890
59600		IF(I2.EQ.LEE)GO TO 860
59700		RD=53
59800		IF(I3.NE.IBLA)GO TO 500
59900		RD=52
60000	CRR***880	REREAD 560,JA,R2,RJQ
60100	880	R5=RD
60200	CRR***890	J=3
60300	890	JA=3
60400		IF(R4.EQ.0)R4=-5
60500	C ABOVE IS FOR DIRECT TYPING OF P,PP,PPP,MP,RIT., ETC.
60600	C IF PARAM 4 IS 0, PUTS IT -5 BELOW.
60700	CRR***900	JA=J
60800	900	IF(JA.GT.0)SAVER=SAVER-1
60900		IF(SAVER.LT.0.AND.CHNG.LT.0)CALL SAVIT
61000	C  SAVES EVERY 5TH TIME AROUND  (IF NO HANGING CHANGES IN DATA)
61100		IF(QUICK.EQ.2)QUICK=0
61200	C RESET QUICK(SUPRESSES PARAM PRINTOUT) IF CRLF AFTER L,R,U,D
61300		IF(X22.NE.0)GO TO 1110
61400		IOLD=0
61500	C RESET FLAG FOR "I" COMMAND
61600		IF(JA.EQ.0)GO TO 130
61700	C  CATCHES ZEROS
61800		GO TO 1110
61900	C NEXT FOR ALPHA TEXT ITEMS.  'T'=TYPE
62000	910	IF(I2.NE.LEE)GO TO 920
62100		RD=9
62200	C TENUTO
62300	CRR***	GO TO 790
62400		GO TO 800
62500	920	IF(I2.NE.LEL)GO TO 940
62600	CRR***	J3=R3
62700	CRR***	J4=R4
62800		J3=R2
62900		J4=R3
63000	C 'TL' SET LOCATION OF TYPE OUT ON SCREEN
63100		IF(J4.EQ.0)J4=J3-200
63200	C OMIT 2ND NUM. AND GET N AND N-200.
63300	CRR***	IF(R3.NE.0)GO TO 930
63400	CRR***	IF(R4.NE.0)GO TO 930
63500		IF(R2.NE.0)GO TO 930
63600		IF(R3.NE.0)GO TO 930
63700		J4=0
63800		J3=450
63900	C 'TL' 0 0 PUTS IT BACK TO ORIG. LOC.
64000	930	CALL TYPLOC(J3,J4)
64100		GO TO 130
64200	940	JA=16
64300	C ????'T' = TEST INPUT
64400		J2=R2
64500		M=I
64600		CALL WORDS
64700		SAVER=SAVER-1
64800		IOLD=0
64900		GO TO 1340
65000	
65100	950	IF(X22.NE.0)GO TO 130
65200		JA=140
65300		RMODE2=R3
65400	C  ?????  CHECK THIS  TYPE 'IN STF# MODE' ETC.  -- SAME AS 140 STF#.
65500	960	SCORE=0
65600		IF(JA.NE.140)GO TO 990
65700	C NEXT PUTS UP STAFF IF IT WASN'T THERE ALREADY
65800		SAVER=-1
65900		RSTF=R2
66000	C DO I NEED THE NEXT???
66100		IF(R3.LT.0)R3=0
66200		DO 970 K=1,ITEM
66300		J=PWDS(K)
66400		IF(RN(J+1).NE.8)GO TO 970
66500		IF(RN(J+2).EQ.R2)GO TO 980
66600	970	CONTINUE
66700	C DIDN'T FIND THIS STAFF
66800		M=LIMIT
66900	C ↑↑ WAS =2000 6/78
67000		IGO=0
67100		JA=8
67200		R3=0
67300		GO TO 1110
67400	980	JA=140
67500		ITCHK=ITEM
67600		ICHK=I
67700		IDPY=ST2
67800	C ALL THIS FOR BACKUPS
67900	990	SPD=ST2
68000		JIT=ITEM
68100		ISC=I
68200		REND=0
68300	C   RETAINS ORIGINS OF SCORE SQUENCE
68400	1000	IF(REND.EQ.2)GO TO 990
68500	C  FOR READIN CONTINUATION.
68600		M=ISC
68700	1010	IF(JA.EQ.8)GO TO 980
68800		IF(INSCOR(SCORE).EQ.0)GO TO 1340
68900		GO TO 130
69000	
69100	1060	IGO=1
69200		CALL GRED
69300		JFONT=0
69400		IF(JA.EQ.98)GO TO 1080
69500		IF(I2.NE.LDD)GO TO 1065
69600	C FOR 'CD' CENTER DASHES
69700		JJ2=1
69800		GO TO 1785
69900	1065	KNT=0
70000		SCORE=0
70100	
70200	1070	KNT=KNT+1
70300	C   NUM OF ITEMS IN LIST
70400		R11=0
70500		R10=0
70600		R9=0
70700		JA=R(1,KNT)
70800		R2=R(2,KNT)
70900		IF(JA.NE.0)GO TO 1090
71000	C  =0 MEANS NO MORE ITEMS.
71100	CC	CALL DPYOUT(1)
71200	        CALL DPYDO(1)
71300		GO TO 40
71400	
71500	1080	X22=0
71600		IGO=-1
71700		CALL DPYNEW
71800		GO TO 120
71900	
72000	1090	DO 1100 K=1,6
72100	1100	RJQ(K)=R(K+2,KNT)
72200	1110	M=1
72300		EDQ=-1
72400		IF(JA.EQ.222)GO TO 1650
72500		IF(JA.EQ.2222)GO TO 1670
72600		DO 1120 K=1,20
72700	1120	JQ(K)=RJQ(K)
72800	C  X22= ITEM# WHEN EDITING OR DELETING.
72900		IF(X22.NE.0)GO TO 1610
73000		IF(JA.GT.0)GO TO 1130
73100		IF(R2.EQ.0)GO TO 130
73200	C  FOR UP, DOWN, LEFT, RIGHT
73300		RJJ2=J2
73400		GO TO 1850
73500	C  GOES BACK IF NEGATIVE AND NOT IN EDIT MODE.
73600	1130	IF(JA.EQ.223)GO TO 1500
73700		IF(JA.EQ.44)GO TO 1510
73800	C  THIS '44' IS SET IN 'EDIT' - IT'S NEVER TYPED.
73900		IF(JA.EQ.55)GO TO 1480
74000		IF(JA.NE.190)GO TO 1860
74100	CC1140	CALL HOMER
74200	1140	CALL HOMX
74300	C  GO ADJUST STEM LENGTHS
74400		GO TO 1790
74500	
74600	
74700	
74800	
74900	
75000	
75100	
75200	
75300	
75400	
     

00100	
00200	1150	IF(X22.EQ.0)GO TO 1350
00300	C  WHEN NOT IN EDIT MODE(X22=0) "P n n2" LISTS ALL PARAMS FOR ITEMS n→n2
00400		J2=R2
00500		TYPE 1160,J2,RJJ(J2-2)
00600	C  TYPE P n TO SEE FULL CONTENTS OF PARAM. n.
00700		GO TO 130
00800	1160	FORMAT(I,F15.5)
00900	
01000	1170	IF(X22.NE.0)GO TO 260
01100		CALL ZOOM
01200	1320	M=1
01300		I=PWDS(ITEM+1)
01400		ITEMX=ITEM
01500	C FOR USE IN CENTERING WHOLE RESTS (IN NOTWRT [NTSM.FAI])
01600		ITEM=0
01700	1330	ST2=3
01800	1340	PLT=1
01900		EDQ=0
02000		CALL ACCPOG(1)
02100		IF(JA.EQ.0)GO TO 2370
02200		IF(JA.NE.24)IGO=0
02300		GO TO 2370
02400	
02500	1350	IF(I2.EQ.LRR)GO TO 1360
02600	C NOW TYPE 'PR' TO PRINT PARAMETER LIST
02700		IF(I2.EQ.LZZ)GO TO 1370
02800	C PIZZ
02900		R5=42
03000		IF(I2.EQ.IBLA)GO TO 890
03100		IF(I2.EQ.LPP)RD=41
03200	C PPP=40 PP=41 P=42 POCO=72 PIU=91
03300		IF(I2.EQ.LII)RD=91
03400		IF(I2.EQ.LOH)RD=72
03500		IF(I2.EQ.LEL)GO TO 780
03600	C PLUS
03700		IF(I3.EQ.IBLA)GO TO 880
03800		RD=40
03900		GO TO 500
04000	1360	CALL LISTP(LST)
04100		GO TO 130
04200	
04300	1370	RA=51857895.
04400		RB=95389999.
04500	C PIZZ.
04600	1380	RD=0
04700	1390	RE=1
04800	CRR***1400	J=16
04900	1400	JA=16
05000	CRR***	REREAD 560,JA,R2,RJQ
05100		R6=RA
05200		R7=RB
05300		R8=RD
05400		IF(R5.EQ.0)R5= RE
05500		IF(R4.EQ.0)R4=14
05600	C 0=PUT IT ABOVE STAFF
05700		GO TO 900
05800	1410	RA=51704789.
05900		RB=74828584.
06000		RD=99999999.
06100	C A TEMPO
06200		GO TO 1390
06300	1420	RA=51708772.
06400		RB=84999999.
06500	C ARCO
06600		GO TO 1380
06700	1430	RA=40999999.
06800	1440	RB=0
06900		GO TO 1380
07000	C LEFT AND RIGHT PARENTHESES AND COMMA
07100	1450	RA=41999999.
07200		GO TO 1440
07300	1460	RA=36999999.
07400		RB=0
07500		RD=0
07600		RE=1.5
07700	C COMMA IS DEFAULT SIZE 1.5
07800		GO TO 1400
07900	
08000	1470	CALL JUGGLE
08100		CALL CLRCUR
08200		CALL DPYNEW
08300		CHNG=0
08400	C RESET CHANGE FLAG - CLEAR EDIT MODE ERROR TRAP
08500		IF(JA.EQ.223)GO TO 1690
08600	C  FOR MOVING DIRECTLY TO NEW ITEM IN EDIT MODE.
08700		IF(ZERO)GO TO 120
08800		X22=ZERO
08900		ZERO=-1
09000		IF(JA.EQ.55)GO TO 1480
09100		IF(JA.EQ.44)GO TO 1510
09200		IF(KED.NE.0)GO TO 1530
09300		GO TO 1700
09400	
09500	C  55,POS  -- SETS UP ALIGNMENT
09600	1480	CALL ESPOS(RLINE)
09700		GO TO 1520
09800	
09900	C  '223,0' EDITS LAST ITEM ENTERED
10000	1500	REDIT=999.0
10100		IF(R2.NE.0)GO TO 1550
10200		X22=ITEM
10300		IF(IOLD.EQ.0)GO TO 1710
10400		IF(IOLD.LE.ITEM)X22=IOLD
10500		GO TO 1710
10600	1510	KED=1
10700		RITEM=R3
10800	C  'ST*, STF#, CODE# (IF 0, ALL ITEMS COME UP) - STF>7 = ALL STAVES.
10900		IF(R2.GT.7)KED=2
11000	1520	REDIT=R2
11100	C  THE STAFF #
11200		JED=1
11300	
11400	1530	IF(EDX(RLINE).GE.0)GO TO 1670
11500		GO TO 1710
11600	C  CR MOVES ALONG GIVEN LINE,  222 LEAVES THIS MODE
11700	
11800	1540	CALL ACCPOG(1)
11900		IF(I.EQ.IX)ITEM=ITEM-1
12000		GO TO 1560
12100	1550	IF(X22.GT.0)GO TO 1610
12200	1560	IF(R2.NE.0)GO TO 1690
12300		IF(JA.NE.0)MINUZ=0
12400		IF(REDIT.EQ.999)GO TO 1570
12500		IF(JA.GT.0)GO TO 1530
12600	
12700	1570	IF(JA.GE.0)GO TO 1580
12800		X22=X22+JA
12900	C FOR TYPING '-n'
13000		GO TO 1600
13100	1580	IF(I1.EQ.PLUS)MINUZ=0
13200		IF(I1.EQ.MINUS)MINUZ=-1
13300	C TYPE '-' WITH NO NUM. TO BACKUP WITH CRLF ONLY
13400	C TYPE '+' TO GO FORWARD
13500		IF(MINUZ.LT.0)GO TO 1590
13600		IF(REDIT.NE.999.)GO TO 1530
13700	C JUMP IF IN 'ED' OR 'ST' MODES
13800		X22=X22+1
13900		GO TO 1700
14000	1590	X22=X22-1
14100	1600	IF(X22.LT.1)GO TO 1670
14200	C EXIT FROM EDIT MODE IF GONE OFF BOTTOM
14300		GO TO 1700
14400	
14500	C  FOR EDITING
14600	1610	IF(JA.EQ.55)GO TO 1800
14700	1620	IF(JA.NE.223)GO TO 1630
14800	C  'I, #' WILL MOVE TO ANOTHER ITEM WHEN ALREADY IN EDIT MODE.
14900		KED=0
15000		JED=0
15100		GO TO 1650
15200	1630	IF(JA.EQ.44)GO TO 1800
15300	C  FOR '24' WHILE IN EDIT MODE.  MAGS WITH CURSOR AS CENTER.
15400		IF(JA.GT.100)GO TO 1640
15500		IF(JA.GT.13)GO TO 130
15600	C  PARAM NUM TOO HIGH?  LOOKS FOR NEXT ITEM TO EDIT IF <CR>
15700	1640	IF(X22.EQ.0)GO TO 1720
15800		IF(R2.NE.0)GO TO 1720
15900	C  BACKS UP WHEN IN EDIT MODE.
16000	
16100		IF(JA.GT.0)GO TO 1730
16200		IF(I.EQ.IX)GO TO 1540
16300		IF(CHNG.NE.0.AND.JA.LT.0)GO TO 130
16400	C CAN'T DO '-N' AND OTHER THINGS AFTER CHANGES IN EDIT MODE.
16500		ZERO=X22+1
16600	C  '0' AFTER AN EDIT ENDS THE EDIT AND GETS NEXT ITEM FOR EDIT.
16700	1650	IF(X22.EQ.0)GO TO 120
16800		IF(KED.EQ.0)REDIT=999.
16900	1660	IF(I.NE.IX)GO TO 1470
17000		ITEM=ITEM-1
17100	C  TO DELETE AN ITEM
17200	1670	X22=0
17300		MINUZ=0
17400	C MINUS SIGN FLAG (WHEN -1, CRLF=BACKUP)
17500		CHNG=0
17600	C RESET CHANGE FLAG
17700		CALL CLRCUR
17800		CALL DPYNEW
17900		IF(REDIT.EQ.999.)GO TO 1680
18000		IF(JA.EQ.55)GO TO 1480
18100		IF(JA.EQ.44)GO TO 1510
18200	1680	IF(R2.EQ.0.OR.R2.GT.ITEM)GO TO 120
18300	C  DELETION IN EDIT MODE DOES NOT LEAVE MODE.
18400	1690	X22=R2
18500	1700	IF(X22.GT.ITEM)GO TO 1670
18600	C  LEAVES EDIT MODE.
18700	1710	CALL BOXX
18800		GO TO 120
18900	
19000	1720	IF(JA.EQ.0)GO TO 1850
19100	1730	X=100-JA
19200		IF(X)JA=JA/100
19300		IF(JA.LE.2)GO TO 1820
19400		CALL EQUAL(X)
19500		GO TO 1840
19600	
19700	1740	IF(X22.EQ.0)GO TO 1770
19800	C 'C' = COPY (IN OR OUT OF EDIT MODE) CR=CRESC.
19900	CC      IF(I2.EQ.IBLA)GO TO 883
20000		IF(I2.NE.IBLA)GO TO 1760
20100	1750	IF(CHNG.EQ.0)GO TO 130
20200	C CAN'T 'COPY' UNLESS CHANGES WERE MADE.
20300		IOLD=0
20400		GO TO 650
20500	1760	IF(I2.EQ.LPP)GO TO 1761
20600	C CP n =CENTER BY NOTE POSITION  ***** A BUG WITH CP WHEN USING 'READ'?????
20700		IF(R2.NE.0)GO TO 1750
20800		CALL EDCEN(CB)
20900		GO TO 1110
21000	1761	CALL SETLET
21100		GO TO 1110
21200	1770	IF(I2.EQ.IBLA)GO TO 1780
21300		IF(I2.EQ.LDD)GO TO 1060
21400	C NOW 'CD', WHEN NOT IN EDIT MODE = CENTER ALL DASHES ON A LINE. (USES GRED)
21500		RD=43
21600	C NEXT FOR ME=MENO=81 MOLTO=90 CRESC.=70 MP=43 MF=50, ALSO 'MACRO'
21700		IF(I2.EQ.LAA)GO TO 2400
21800		IF(I2.EQ.LFF)RD=50
21900		IF(I2.EQ.LOH)RD=90
22000		IF(I2.EQ.LEE)RD=81
22100		IF(I2.EQ.LRR)RD=70
22200		IF(I2.NE.LTT)GO TO 880
22300	C JT=JUSTIFY TEXT (ONLY 1 STAFF AT A TIME)
22400	1780	CALL MOVER
22500		IF(R2.GE.99)GO TO 260
22600	C   99(+)=BACKUP OUT OF MOVER ETC.
22700		JFONT=0
22800	1785	IGO=0
22900	C  SO IT WON'T DO ALL FONT LOOKUPS.
23000	1790	IF(JJ2)GO TO 130
23100		M=PWDS(JJ2)
23200		I=PWDS(ITEM+1)
23300		ITEM=JJ2-1
23400		ST2=WDS(JJ2)
23500	C SO IT DOESN'T HAVE TO GO THROUGH ALL ITEMS
23600		GO TO 1340
23700	
23800	1800	IF(REDIT.NE.55.)REDIT=0
23900	C NEEDED FOR 'S'ET, THEN 'A'LIGNE ROUTINE
24000		IF(I2.NE.IBLA)GO TO 1660
24100	C WE GET HERE WHEN TYPING 'ST' OR 'ED' WHEN ALREADY IN EDIT MODE.
24200		IF(R2.EQ.0)GO TO 1810
24300		IF(CHNG.NE.0)GO TO 130
24400	C CATCH 'S'ET AFTER A CHANGE WAS MADE.
24500		GO TO 1660
24600	C GO PAST HERE ONLY FOR 'A'LIGN
24700	1810	IF(KED.GE.0)RLINE=RJ3
24800		RJ3=RLINE
24900		GO TO 1840
25000	C  FOR '55' ALIGNING
25100	1820	IF(X)GO TO 1830
25200		CALL PARCH(JA,JJA,R2)
25300		GO TO 1840
25400	1830	RJJ2=R2+RJJ2
25500	C  ARRAYS NEED 2O LOCATIONS HERE.
25600	C CHNG PARAMS WITH PAIRS OF NUMS.(EG. 2,122  4,13  5,-2 ETC.)
25700	1840	CALL RJED
25800	1850	CALL RJED2
25900		ST2=WDS(ITEM+1)
26000		I=PWDS(ITEM+1)
26100		IF(X22.NE.0)CHNG=-1
26200	C SET CHANGE FLAG TO TRAP EDIT MODE ERRORS. (CLEARED AT 172)
26300		CALL DPYNEW
26400	
26500	
26600	
26700	
26800	
26900	
27000	
27100	
27200	
27300	
     

00100	1860	J2=R2
00200		IF(J2.LT.0)GO TO 130
00300		IF(J2.GT.7)GO TO 130
00400	C STOPS TYPO ERROR ON STAFF NUM. (<0, >7)
00500		RSTJ2=RSTFAC(J2)
00600	
00700	1870	IF(JA.EQ.16)GO TO 1910
00800		IF(PLT.NE.0)GO TO 2080
00900		IF(JA.NE.2)GO TO 1880
01000		IF(R8.NE.0)GO TO 2010
01100		IF(R9.NE.0)R9=0
01200		GO TO 2010
01300	1880	IF(JA.NE.8)GO TO 1900
01400		IF(R9.NE.1)GO TO 2010
01500		L=7
01600		K='INST.'
01700	C  RJQ(7) IS R9
01800	1890	RA=RN(MEDIT+L+2)
01900		CALL TYPCHR(RA,5)
02000		CALL TYPCRL
02100		CALL TYPSTR('TYPE ')
02200		CALL TYPCHR(K,5)
02300		CALL TYPSTR(' NAME   ')
02400		READ(IDEV,FA5)RD
02500		CALL LO2UP(RD)
02600		RJQ(L)=RD
02700		IF(RD.NE.' ')GO TO 2010
02800		IF(RN(MEDIT).LT.L)RA=0
02900	C  RESTORES NAME IF THERE WAS ONE ALREADY. ELSE=0
03000		RJQ(L)=RA
03100	C  WHEN P9=1 ASKS FOR ID NAME FOR THE STAFF (FOR PART EXTRACTOR)
03200		GO TO 2010
03300	CF371   FORMAT(A5,A1,A3)
03400	1900	IF(JA.NE.11)GO TO 2010
03500	C  ↑↑↑↑ WAS - TO 63
03600		IF(J10.NE.1)GO TO 2010
03700		K='FILE'
03800		L=8
03900	C   P10←1 GETS NAME OF BASIC DRAW FILE, PUTS IT IN P10 (NJR)
04000		GO TO 1890
04100	C  IF NO NAME ASKED FOR, IT TAKES LAST NAME GIVEN.(SOLVES SORT PROB?)
04200	1910	RD=R5
04300		IF(RD.GE.100)RD=RD-100
04400	C ADD 100 TO SZ TO MAKE TEXT APPEAR IN ALL SEPARATE PARTS OF ORCH. SCORE
04500		IF(J10.EQ.0)GO TO 2000
04600		L=ITEM
04700		IF(X22.NE.0)L=X22-1
04800		IF(J10.EQ.1)GO TO 1980
04900	C  TEMP. FIX TO CNVT TEXT FORMAT TO NEW STYLE.  "10 99"
05000	
05100	C  NEXT FOR CENTERING TEXT.  P10>1
05200	1950	CALL CENTXT(RD)
05300		GO TO 2000
05400	1980	CALL CONTXT
05500	C FOR TEXT CONTINUATION
05600	2000	IF(PLT.NE.0)GO TO 2080
05700	2010	CALL MORCEN(CB)
05800	C **** FOR '0' EDITS ******
05900	2070	CALL LUP2
06000	2080	IF(DP(J2).GE.0)GO TO 2090
06100		IF(JA.NE.8)GO TO 70
06200	C NOW GET SIZE FACTOR, IF IT'S THERE. (NEEDED IN 'SCORE' SECTION.)
06300		IF(R5.NE.0)RSTFAC(J2)=R5
06400		GO TO 70
06500	C*** 3/74  NEW DP SYSTEM
06600	C  WHAT ABOUT EDITS?*******
06700	2090	POS=STFF(J2)
06800		RX3=R3
06900	C  SAVES IT IN RJQ(20) FOR OTHER ROUTINES.
07000		J3=ROFF(RHORZ(R3))
07100	C  LINE IS DIVIDED INTO 200 POINTS.
07200		CALL CENTX
07300	C  SETS VERT.(CENTR) POSITION BASED ON STAFF AND R4
07400		R3=J3
07500		IF(JA.LE.2)GO TO 60
07600	2100	GO TO(2430,2430,2130,2210,2140, 2190,2150,2180,60,2120, 2130,2200)
07700		1,JA
07800		GO TO (2150,2160,2170),JA-15
07900	C  FOR 16,17,18 (WORDS, KSIG, METER)
08000		IF(JA.EQ.99)GO TO 70
08100	C    FOR PART EXTRACTOR TRANSPOSER - KEY SIG=0
08200		IF(JA.NE.33.AND.JA.NE.44)GO TO 2110
08300		JA=JA/11
08400	C  THIS IS TEMPORARY - TO READ PAGE TEMP. FILES.
08500		GO TO 2100
08600	
08700	2110	I=PWDS(ITEM+1)
08800		GO TO 130
08900	C  44 1; JFONT=ONE DISPLAYS FONTS - THIS ALSO CATCHES SOME TYPOS
09000	
09100	2120	CALL MAKNUM(R5)
09200		GO TO 70
09300	
09400	2130	CALL CLEFS
09500		GO TO 70
09600	
09700	2140	CALL SLUR
09800		GO TO 70
09900	
10000	2150	CALL ALPHA
10100		GO TO 70
10200	
10300	2160	CALL KSIG
10400		GO TO 70
10500	
10600	2170	CALL METER
10700		GO TO 70
10800	
10900	2180	IF(R2.EQ.0)RMOV=R8
11000		CALL STAFF
11100		GO TO 70
11200	CC625   IF(J10.LT.100)GO TO 1625
11300	CC      CALL BEAMX
11400	CC      GO TO 160
11500		
11600	2190	CALL BEAMX
11700	CC625   CALL BMSTF
11800		GO TO 70
11900	C   BEAMS, STAFF LINES ****
12000	2200	CALL CIRCLE
12100		GO TO 70
12200	
12300	2210	CALL ITMSUB
12400	C   BAR LINES, ETC.
12500		GO TO 70
12600	
12700	2220	K=0
12800	C GETS SAVED MS FILES
12900		GO TO 2230
13000	2250	K=-1
13100	C  -1=FILE NAME ALREADY GIVEN
13200	2230	CALL GETMS(K)
13300		GO TO(2110,130,1320,240)K
13400	C K IS RESET IN GETMS
18100	
18200	C  NEXT RUNS THROUGH DATA WITH NEW CHANGES.
18300	2370	IF(M.GE.I)GO TO 2390
18400		IF(IGO.EQ.0)GO TO 2380
18500	C USE "Z" TO DO FIXUP WHEN LIST IS SCRAMBLED !?X@!ZQ
18600		IF(M.EQ.PWDS(ITEM+1))GO TO 2380
18700		K=ITEM+1
18800		CALL TYPSTR('   FIXING ITEM ')
18900		CALL TYPINT(K)
19000		CALL TYPCRL
19100		PWDS(K)=M
19200	2380	CALL RUNTHR(M)
19300		IF(EDQ.LE.0)GO TO 1860
19400		GO TO 130
19500	
19600	2390	M=1
19700		IF(PLT.EQ.1)EDQ=-1
19800		PLT=0
19900		GO TO 130
20000	C  ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
20100	
20200	2400	CALL TYPSTR(' MACRO FILE NAME= ')
20300		ACCEPT 190,K
20400		IF(K.EQ.'99')GO TO 130
20500	C TYPE 99 TO BACKUP.
20600		CALL LO2UP(K)
20700		IF(K.EQ.IBLA)K='MACRO'
20800		CALL OFILE(1,K)
20900		CALL TYPSTR(' END MACRO WITH * ')
21000		CALL TYPCRL
21100	2410	ACCEPT 700,INP
21200		IF(I1.EQ.ISTAR)GO TO 2420
21300		WRITE(1,700)INP
21400		GO TO 2410
21500	2420	END FILE 1
21600		CALL TYPSTR(' MACRO=')
21700		CALL TYPWRD(K)
21800		CALL TYPSTR('.DAT  *****  RUN IT? ')
21900		ACCEPT 700,I1
22000		CALL LO2UP(I1)
22100		IF(I1.EQ.LYY)GO TO 220
22200		GO TO 130
22300	
22400	CRR***2430	FORMAT(I,24F)
22500	2430	END